 /*
 * Name        : common.h
 * Author      : yinjianwen
 * Create      : 2018年1月2日
 * Version     :
 * Copyright   : Copyright © 1998 - 2017 Bluedon All Rights Reserved
 * cription : C++, Ansi-style
 */
#ifndef COMMON_H_
#define COMMON_H_

#include <pthread.h>
using namespace std;
/**
 * 饿汉模式(eager singleton)的单例模式类
 */
class SingletonHunger
{
public:
    static SingletonHunger * GetInstance();
    void DestroySingleton();
    int Add(int i, int j);
private:
    ~SingletonHunger();
    SingletonHunger();
private:
    static SingletonHunger *m_pStHunger;
};
/**
 * 懒汉模式(lazy singleton)的单例模式类.
 * 此类中只设计线程安全的模式
 */
class SingletonLazy
{
public:
    static SingletonLazy * DoubleCheckGetInstance();
    static SingletonLazy * MeyersGetInstance();
    void DestroySingleton();
    int Add(int i, int j);
private:
    static SingletonLazy *m_pStLazy;
    static pthread_mutex_t mutex;
    SingletonLazy();
    ~SingletonLazy();
};

#endif /* COMMON_H_ */
